1. Field of the Invention
This invention relates to a data processing system and method, and more particularly relates to improvements in the system, organization and processing of computer programs.
2. Background
Computer programs are generally divided into compiled and interpreted types. The source code that the programmer writes is readable by humans but it is not readable by the computer. The source code must be converted into a machine language of binary numbers that can be decoded by the computer to perform the desired operations. In compiled programs, the human-readable source code written by the programmer is processed off-line by a compiler to parse the executable commands from comments, tokenize the commands, optimize the commands to eliminate redundancies, identify errors, and translate the tokenized commands into machine language object code. The object code can then be loaded and immediately executed by the computer. However, the object code cannot be easily modified. Changes to the program must be written in source code and the entire source code program then recompiled, creating a second object code module.
Contrast this with interpreted programs. In interpreted programs, an interpreter program is stored in the computer""s memory. The programmer writes the application program in source code, as before. Then the source code is directly loaded into the computer""s memory. The interpreter program then takes each sequential word of the source code and performs many of the steps performed by a compiler, but in real time. The interpreter parses each word to identify the executable commands, it tokenizes the commands, optimizes the commands to eliminate redundancies, identifies errors, and translates the tokenized commands into machine language object code. The object code is then immediately executed by the computer. Interpreted programs have the advantage that they can be easily modified. Changes to the program can be written in source code and immediately reloaded and executed by the interpreter. However, interpreted programs have the disadvantage that they are slower than compiled programs, since the overall processing time must include the time for running the interpreter program, itself.
Program organization has evolved from procedural program organization to more modern object oriented programming. Object oriented programming is a technique to organize the source code into objects, where the data structures and the behavior are associated as a single entity. While object oriented programming helps software developers write source code more effectively, the association of data and behavior is merely an abstract representation of the source code. In reality, data and behavior do not travel together in the same object.
Software is designed to operate on specific data sets. The software program loads the data from a database or independent file structure and performs actions on that data. In some cases, the information is received via a communications link between two software programs, but the basic process is the same. This is true for all environments, including Windows and Java. Object oriented programming is merely a way of thinking and does not reflect the realties that data and behavior do not travel together. The data has no behavior of its own and cannot assist, direct, or otherwise enable an application to process it. What is needed is an entirely new way of moving data and its corresponding behavior together.
The invention disclosed herein addresses the problems associated with interfacing information to applications. Software applications are built to process a given set of information and, as a result, do not adapt to the input of varied forms of information very easily. Information objects, in accordance with the invention, change the model for information by providing a layer of software and a structured container that envelopes the information.
An information object allows arbitrary structured or unstructured information to be bundled with instructions for processing. The object is packed into a container with a well defined structure that is processed on a client computer system. The client computer system possesses a runtime environment that processes the information object and allows it to communicate with other applications. The information object is fundamentally different from a file system or other types of container systems in its assignment of context to entries. By applying a context identifier, the runtime system which processes the information object retrieves selected entries for selected tasks.
The entries are combined into folders, which are nested in a hierarchical fashion. A manifest identifies each of the entries and how the folders are organized. Each entry belongs to at least one folder. Each folder also belongs to at least one other folder, and there is a single root folder at the top of the folder tree.
In one aspect of the invention, the system provides computer programs to a computer having a memory and a processor, the memory including a stored application program. A runtime system is stored in the memory, including a loader program, a script interpreter program, and an external interface program. An information object buffer is formed in the runtime system, including a manifest buffer, and at least one folder buffer including an information entry buffer and a scripts buffer.
In accordance with the invention, an information object is stored in the memory, including a manifest, and at least a root folder including an information entry portion and a scripts portion. The information entry contains data to be operated on and the script contains executable instruction code. The folders also include an attributes portion containing additional data to be operated on and an extensions portion containing additional executable instruction code. The manifest of the information object includes a description of all the folders in the information object.
The loader loads the manifest in the manifest buffer and uses the description to identify the root folder. The loader then loads the information entry in the information entry buffer and the script in the scripts buffer. Then the loader the transfers control to the script interpreter program.
The script interpreter program then executes the executable instruction code in the script of the root folder, to operate on the data in the information entry portion. Control is then passed to sub-folders in the hierarchy of folders contained in the information object. The script interpreter interprets and executes the script statements in each of the sub-folders of the information object. Some of the script statements make calls to the external application programs through the external interface of the runtime system. The external application programs can access data stored in the information entries of the information object while performing their functions.
The resulting invention solves the problems associated with interfacing information to applications and provides a flexible architecture to adapt to the input of varied forms of information. Information objects, in accordance with the invention, change the model for information by providing a layer of software and a structured container that envelopes the information.